"""
文件相关的类定义
"""
import json
from data_define import Record

# 定义一个抽象类用来做顶层设计，确定由哪些功能需要实现
class FileReader:
    def read_data(self) -> list[Record]:
        # 读取文件的数据，读到的每一行数据都转换为 Record 对象，将它们都封装到 list 内返回即可
        pass

# 读取文本文件类的实现
class TextFileReader(FileReader):
    def __init__(self,path):
        self.path = path        # 定义成员变量记录文件的路径

    # 复写(实现抽象方法) 父类的方法
    def read_data(self) -> list[Record]:
        f = open(self.path,"r",encoding="UTF-8")

        record_list: list[Record] = []
        for line in f.readlines():
            line = line.strip()     # 消除读取到的每一行数据中的 \n
            data_list = line.split(",")     # 以 "," 切分字符串
            record = Record(data_list[0],data_list[1],int(data_list[2]),data_list[3])
            record_list.append(record)

        f.close()
        return record_list


# 读取 json 文件的实现
class JsonFileReader(FileReader):
    def __init__(self,path):
        self.path = path        # 定义变量记录文件路径

    def read_data(self) -> list[Record]:
        f = open(self.path,"r",encoding="UTF-8")

        record_list: list[Record] = []
        for line in f.readlines():
            data_dict = json.loads(line)
            record = Record(data_dict["date"],data_dict["order_id"],data_dict["money"],data_dict["province"])
            record_list.append(record)

        f.close()
        return record_list



if __name__ == '__main__':
    text_file_reader = TextFileReader("2011年1月销售数据.txt")         # 构建类对象
    list_1 = text_file_reader.read_data()        # 调用类方法
    for l in list_1:
        print(l)

    json_file_reader = JsonFileReader("2011年2月销售数据JSON.txt")
    list_2 = json_file_reader.read_data()
    for l in list_2:
        print(l)